<?php 
/**
 *  Por Federico Pisarello - SisDev Software (c) 2012 - Buenos Aires, Argentina.
 * 	fpisarello@sisdevsoft.com
 */

require("includes/funciones.inc.php");

session_start();
if(!isset($_SESSION['userName']))
	exit();

function calTiempoCorr($ptoCard = "", $idUser = "", $idCarrera = "", $diaMarcada = "", $horaMarcada = "", $atrasoReloj = "", $adelantoReloj = "")
{
	require("includes/constants.php");
	
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	try
	{
		// Para Calcular los puntos, vamos a tomar la hora de puesta de sol, si llegaron despues de media hora, tomar la salida del sol, del dia de marca, si es marca 1, tomar 1, si es 2, tomar 2 y si es 3, tomar 3
		
		//Datos de entrada
		if($ptoCard == "")
			$ptoCard = $_REQUEST["ptoCard"];
		if($idUser == "")
			$idUser = $_REQUEST["idUser"];
		if($idCarrera == "")
			$idCarrera = $_REQUEST["idCarrera"];
		if($diaMarcada == "")
			$diaMarcada = $_REQUEST["diaMarcada"];
		if($horaMarcada == "")
			$horaMarcada = str_replace(":", "", $_REQUEST["horaMarcada"]);
		if($atrasoReloj == "")
			$atrasoReloj = str_replace(":", "", $_REQUEST["atrasoReloj"]);
		if($adelantoReloj == "")
			$adelantoReloj = str_replace(":", "", $_REQUEST["adelantoReloj"]);
		
		$strSQL = "SELECT cp.fechaSuelta, cp.horaSuelta, c.diaInicio, c.horaInicio, c.diaCierre, c.horaCierre, c.hPuestaSol1, c.hPuestaSol2, c.hPuestaSol3, c.hSaleSol1, c.hSaleSol2, c.hSaleSol3
					FROM carreras c 
					INNER JOIN carrera_ptos cp ON c.idCarrera = cp.idCarrera 
					WHERE c.idCarrera = $idCarrera AND cp.idPto = '$ptoCard'";
		
		$rsCarrera = $DB->Execute($strSQL);
		
		if($rsCarrera->EOF) {
			$arrJSON->distancia = "0.00";
			$arrJSON->tiempoRecorrido = "0.00";
			$arrJSON->horaCierreApe = "0.00";
			$arrJSON->horaAleAtra = "0.00";
			$arrJSON->tiempoCal = "00:00:00:000";
			$arrJSON->mtsMinutos = "0.00";
			
			return json_encode(array());
		}
		else
		{
			$fechaSuelta = $rsCarrera->fields('fechaSuelta');
			$horaSuelta = $rsCarrera->fields('horaSuelta');
			$horaPuestaSol = $rsCarrera->fields('hPuestaSol');
			$horaSaleSol = $rsCarrera->fields('hSaleSol');
			$diaApertura = $rsCarrera->fields('diaInicio');
			$horaApertura = $rsCarrera->fields('horaInicio');
			$diaCierre = $rsCarrera->fields('diaCierre');
			$horaCierre = $rsCarrera->fields('horaCierre');
			
			//Puesta y Sale el Sol - Calculos
			$hPuestaSol1 = $rsCarrera->fields('hPuestaSol1');
			$hPuestaSol2 = $rsCarrera->fields('hPuestaSol2');
			$hPuestaSol3 = $rsCarrera->fields('hPuestaSol3');
			$hSaleSol1 = $rsCarrera->fields('hSaleSol1');
			$hSaleSol2 = $rsCarrera->fields('hSaleSol2');
			$hSaleSol3 = $rsCarrera->fields('hSaleSol3');
			
			if ($hPuestaSol1 != '000000' && $hSaleSol1 != '000000') {
				$segHoraPuesta = substr($hPuestaSol1, 4, 2);
				$minHoraPuesta = substr($hPuestaSol1, 2, 2) + 30;
				$horHoraPuesta = substr($hPuestaSol1, 0, 2);
				
				$segHoraSale = substr($hSaleSol1, 4, 2);
				$minHoraSale = substr($hSaleSol1, 2, 2);
				$horHoraSale = substr($hSaleSol1, 0, 2);
							
				if($minHoraSale < 30) {
					$minHoraSale += 60;
					$horHoraSale -= 1;
				}
				
				$minHoraSale -=30;
				$horaPuesta = round($segHoraPuesta / 60 + $minHoraPuesta + $horHoraPuesta * 60, 6);
	     		$horaSale = round($segHoraSale / 60 + $minHoraSale + $horHoraSale * 60, 6);
	     		$horaTotal1 = 1440 - $horaPuesta + $horaSale;
	     		
			}
			else {
				$horaTotal1 = 0;
			}
			
			if ($hPuestaSol2 != '000000' && $hSaleSol2 != '000000') {
				$segHoraPuesta = substr($hPuestaSol2, 4, 2);
				$minHoraPuesta = substr($hPuestaSol2, 2, 2) + 30;
				$horHoraPuesta = substr($hPuestaSol2, 0, 2);
				
				$segHoraSale = substr($hSaleSol2, 4, 2);
				$minHoraSale = substr($hSaleSol2, 2, 2);
				$horHoraSale = substr($hSaleSol2, 0, 2);
				
				if($minHoraSale < 30) {
					$minHoraSale += 60;
					$horHoraSale -= 1;
				}
				
				$minHoraSale -=30;
				$horaPuesta = round($segHoraPuesta / 60 + $minHoraPuesta + $horHoraPuesta * 60, 6);
	     		$horaSale = round($segHoraSale / 60 + $minHoraSale + $horHoraSale * 60, 6);
	     		$horaTotal2 = 1440 - $horaPuesta + $horaSale;
			}
			else {
				$horaTotal2 = 0;
			}
			
			if ($hPuestaSol3 != '000000' && $hSaleSol3 != '000000') {
				$segHoraPuesta = substr($hPuestaSol3, 4, 2);
				$minHoraPuesta = substr($hPuestaSol3, 2, 2) + 30;
				$horHoraPuesta = substr($hPuestaSol3, 0, 2);
				
				$segHoraSale = substr($hSaleSol3, 4, 2);
				$minHoraSale = substr($hSaleSol3, 2, 2);
				$horHoraSale = substr($hSaleSol3, 0, 2);
				
				if($minHoraSale < 30) {
					$minHoraSale += 60;
					$horHoraSale -= 1;
				}
				
				$minHoraSale -=30;
				$horaPuesta = round($segHoraPuesta / 60 + $minHoraPuesta + $horHoraPuesta * 60, 6);
	     		$horaSale = round($segHoraSale / 60 + $minHoraSale + $horHoraSale * 60, 6);
	     		$horaTotal3 = 1440 - $horaPuesta + $horaSale;
			}
			else {
				$horaTotal3 = 0;
			}
			
			//Calculo en minutos la diferencia entre la hora de cierre y la de apertura
			$segApertura = substr($horaApertura, 4, 2);
			$minApertura = substr($horaApertura, 2, 2);
			$horApertura = substr($horaApertura, 0, 2);
			$segCierre = substr($horaCierre, 4, 2);
			$minCierre = substr($horaCierre, 2, 2);
			$horCierre = substr($horaCierre, 0, 2);
			
			$horApertura = $horApertura + $diaApertura * 24;
			if($diaApertura == $diaCierre)
				$horCierre = $horCierre;
			else
				$horCierre = $horCierre + $diaCierre * 24;
			$minutosApertura = round($segApertura / 60 + $minApertura + $horApertura * 60, 6);
			$minutosCierre = round($segCierre / 60 + $minCierre + $horCierre * 60, 6);
			
			$calHora = $minutosApertura - $minutosCierre;
			
			if($fechaSuelta != $diaMarcada) 
				$recargo = $fechaSuelta * 24;
			else
				$recargo = 0;
				
			//Calculo el Atraso y Adelanto del Reloj
			$qarca = 0;
			if($adelantoReloj == "000000") {
				$valReloj = $atrasoReloj;
				$qarca = 1;
			}
			else
				$valReloj = $adelantoReloj;
			
			$segReloj = substr($valReloj, 4, 2);
			$minReloj = substr($valReloj, 2, 2);
			$horReloj = substr($valReloj, 0, 2);
			$segMarcada = substr($horaMarcada, 4, 2);
			$minMarcada = substr($horaMarcada, 2, 2);
			$horMarcada = substr($horaMarcada, 0, 2);
			if($diaCierre == $diaMarcada)
				$horMarcada = $horMarcada;
			else 
				$horMarcada = $horMarcada + $diaMarcada * 24;
			$minutosReloj = round($segReloj / 60 + $minReloj + $horReloj * 60, 6);
			$minutosMarcada = round($segMarcada / 60 + $minMarcada + $horMarcada * 60, 6);
			$tiempoDif = round($minutosReloj / $calHora * ($minutosMarcada - $minutosCierre), 6);
			
			$segSuelta = substr($horaSuelta, 4, 2);
			$minSuelta = substr($horaSuelta, 2, 2);
			$horSuelta = intval(substr($horaSuelta, 0, 2));
			$horSuelta = $horSuelta + $recargo;
			
			$minunosSuelta = round($segSuelta / 60 + $minSuelta + $horSuelta * 60, 6);
			
			if($qarca == 0)
				$tiempoRecorrido = $minutosMarcada - $minunosSuelta - $tiempoDif;
			else 
				$tiempoRecorrido = $minutosMarcada - $minunosSuelta + $tiempoDif;
			
			if($fechaSuelta != $diaMarcada) {
				if($diaMarcada == 2) {
					$tiempoRecorrido -= $horaTotal1;
				}
				elseif($diaMarcada == 3) {
					$tiempoRecorrido -= $horaTotal1 - $horaTotal2;
				}
				elseif($diaMarcada >= 4) {
					$tiempoRecorrido -= $horaTotal1 - $horaTotal2 - $horaTotal3;
				}
			}
			
			$calTiempo = intval(intval($tiempoRecorrido) / 60);
			$calTiempoMin = intval($tiempoRecorrido) - $calTiempo * 60;
			$calTiempoSeg = round(($tiempoRecorrido - intval($tiempoRecorrido)) * 60 ,3);
			$calTiempoMiSeg = intval(($calTiempoSeg - intval($calTiempoSeg)) * 1000);
			
			//Calculo la Distancia del Punto de Suelta al Palomar
			$rsUsers = $DB->Execute("SELECT * FROM users WHERE idUser = $idUser");
			if($rsUsers->EOF)
				$distancia = 0;
			else
			{
				$latitude1 = $rsUsers->fields('latitude');
				$longitude1 = $rsUsers->fields('longitude');
				
				$strSQL = "SELECT * FROM ptosuelta ps
							INNER JOIN carrera_ptos cp ON ps.idPtoSuelta = cp.idPuntoSuelta
							WHERE idCarrera = $idCarrera AND idPto = '$ptoCard'";
				
				
				$rsPtoSuelta = $DB->Execute($strSQL);
				if($rsUsers->EOF)
					return json_encode(array());
				else
				{
					$latitude2 = $rsPtoSuelta->fields('latitude');
					$longitude2 = $rsPtoSuelta->fields('longitude');
				}
				
				$distancia = devuelveDistacia($latitude1, $longitude1, $latitude2, $longitude2);
			}
			
			$mtsMinutos = round($distancia / $tiempoRecorrido, 3);
	
			$arrJSON->distancia = $distancia;
			$arrJSON->tiempoRecorrido = $tiempoRecorrido;
			$arrJSON->horaCierreApe = $calHora;
			$arrJSON->horaAleAtra = $tiempoDif;
			$arrJSON->tiempoCal = substr("00".$calTiempo, -2).":".substr("00".$calTiempoMin, -2).":".substr("00".$calTiempoSeg, -2).":".substr("000".$calTiempoMiSeg, -3);
			$arrJSON->mtsMinutosReal = $mtsMinutos;
//			if($mtsMinutos<900)
//				$arrJSON->mtsMinutos = 900;
//			else
				$arrJSON->mtsMinutos = $mtsMinutos;		
			
			return json_encode($arrJSON);
		}
	}
	catch(Exception $e) {
		$arrJSON->distancia = "0.00";
		$arrJSON->tiempoRecorrido = "0.00";
		$arrJSON->horaCierreApe = "0.00";
		$arrJSON->horaAleAtra = "0.00";
		$arrJSON->tiempoCal = "00:00:00:000";
		$arrJSON->mtsMinutos = "0.00";
			
		return json_encode($arrJSON);
	}
}

function distanciaPalomar()
{
	require("includes/constants.php");
	
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	try
	{
		$idUser = $_REQUEST["idUser"];
		$ptoCard = $_REQUEST["ptoCard"];
		$idCarrera = $_REQUEST["idCarrera"];
		
		$rsUsers = $DB->Execute("SELECT * FROM users WHERE idUser = $idUser");
		
		if($rsUsers->EOF) {
			$arrJSON->distancia = "0.00";
			return json_encode($arrJSON);
		}
		else
		{
			$latitude1 = $rsUsers->fields('latitude');
			$longitude1 = $rsUsers->fields('longitude');
			
			$strSQL = "SELECT * FROM ptosuelta ps
						INNER JOIN carrera_ptos cp ON ps.idPtoSuelta = cp.idPuntoSuelta
						WHERE idCarrera = $idCarrera AND idPto = '$ptoCard'";
			
			
			$rsPtoSuelta = $DB->Execute($strSQL);
			if($rsUsers->EOF)
				return json_encode(array());
			else
			{
				$latitude2 = $rsPtoSuelta->fields('latitude');
				$longitude2 = $rsPtoSuelta->fields('longitude');
			}
	
			$arrJSON->distancia = devuelveDistacia($latitude1, $longitude1, $latitude2, $longitude2);		
			return json_encode($arrJSON);
		}
	}
	catch(Exception $e) {
		$arrJSON->distancia = "0.00";
		return json_encode($arrJSON);
	}
}

function searchCarrerasItem()
{
	require("includes/constants.php");
	require("includes/datatables_db/Datatables.php");
	
	$datatables = new Datatables();
	
	$datatables
			->select('idCarreraItem, idUser, tipo, paloma, DiaHora, horaMarca, adelanto, atraso, puntos, puesto, especial, mtsMinuto, mtsPalomar, minRecorridos')
			->edit_column('tipo', '$1', 'devuelveTipoPaloma(tipo)') // php functions
			->edit_column('horaMarca','$1','formatoHora(horaMarca)') // php functions
			->from('carreras_items')
			->where("puntoCard = '".$_REQUEST["carreraPtoCard"]."' AND fecha = '".empaquetarFecha($_REQUEST["carreraFecha"])."'")
			->join('carreras', 'carreras_items.idCarrera = carreras.idCarrera', 'inner')
			->where('state <>', $stateErase)
			->select('description');
		
	return $datatables->generate();
}

function devuelveTipoPaloma($tipoPaloma)
{
	require("includes/constants.php");
	
	if($tipoPaloma == 'P')
		return $tipoPichon;
	else if($tipoPaloma == 'A')
		return $tipoAdulta;
}


function searchABMCarreras()
{
	require("includes/constants.php");
	require("includes/datatables_db/Datatables.php");
	
	$datatables = new Datatables();
	
	$datatables
			->select('idCarrera, description, fecha, horaInicio, horaCierre')
			->from('carreras')
			->edit_column('fecha', '$1', 'desempaquetarfecha(fecha)') // php functions
			->edit_column('horaInicio', '$1', 'formatoHora(horaInicio)') // php functions
			->edit_column('horaCierre', '$1', 'formatoHora(horaCierre)') // php functions
			->where('state <>', $stateErase);
	
	if($_SESSION['userType'] == $idTypeDataEntry) {
		$datatables->add_column('edit', '&nbsp;', 'idCarrera');
	}
	else {
		$datatables->add_column('edit', '<button id="btnPublicar" class="itmIngBtnTable" onclick="$_publicarResultados($1)">Publicar</button><img src="imagenes/loading.gif" id="idCarrera$1" style="display: none" >', 'idCarrera');
	}
			
		
	return $datatables->generate();
}

function addOrEditItem()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;

	$DB->StartTrans(); // start transaction
	
	if(!isset($_REQUEST["idCarreraItem"])){
		
//		//Verifico que ya no este la paloma cargada
//		$strSQL = "SELECT * FROM carreras_items WHERE userName = '".$_REQUEST["userName"]."' AND userState <> '$stateErase'";
//		$rsUsers = $DB->Execute($strSQL);		
//		if(!$rsUsers->EOF)
//		{
//			$arrJSON->status = "ERROR";
//			$arrJSON->msg = 'El nombre de usuario ingresado ya existe';
//			return json_encode($arrJSON);
//		}
		
		$strSQL = "INSERT INTO carreras_items ( ";
		$strSQL .= "	idCarrera, ";
		$strSQL .= "	idUser, ";
		$strSQL .= "	tipo, ";
		$strSQL .= "	paloma, ";
		$strSQL .= "	adelanto, ";
		$strSQL .= "	atraso, ";
		$strSQL .= "	diaHora, ";
		$strSQL .= "	horaMarca, ";
		$strSQL .= "	puntos, ";
		$strSQL .= "	puesto, ";
		$strSQL .= "	especial, ";
		$strSQL .= "	mtsMinuto, ";
		$strSQL .= "	mtsMinutoReal, ";
		$strSQL .= "	mtsPalomar, ";
		$strSQL .= "	minRecorridos, ";
		$strSQL .= "	puntoCard ";
		$strSQL .= "	) VALUES ( ";
		$strSQL .= "	".$_REQUEST["idCarrera"].", ";
		$strSQL .= "	".$_REQUEST["carreraUsuario"].", ";
		$strSQL .= "	'".$_REQUEST["carreraTipo"]."', ";
		$strSQL .= "	'".$_REQUEST["palomaAnillo"]."', ";
		$strSQL .= "	'".str_replace(":","",$_REQUEST["carreraAdelanto"])."', ";
		$strSQL .= "	'".str_replace(":","",$_REQUEST["carreraAtraso"])."', ";
		$strSQL .= "	".$_REQUEST["carreraDiaMarca"].", ";
		$strSQL .= "	'".str_replace(":","",$_REQUEST["carreraHoraMarca"])."', ";
		$strSQL .= "	0, ";
		$strSQL .= "	0, ";
		if($_REQUEST["carreraItemEspecial"]=="on")
			$strSQL .= "	'S', ";
		else
			$strSQL .= "	'N', ";
		$strSQL .= "	".$_REQUEST["mtsMinuto"].", ";
		$strSQL .= "	".$_REQUEST["mtsMinutoReal"].", ";
		$strSQL .= "	".$_REQUEST["mtsPuntoSuelta"].", ";
		$strSQL .= "	".$_REQUEST["tiempoCorr"].", ";
		$strSQL .= "	'".$_REQUEST["carreraPtoCardinal"]."'";
		$strSQL .= "	)";
	}
	else{
		$strSQL = "UPDATE carreras_items SET ";
		$strSQL .= "	idCarrera = '".$_REQUEST["idCarrera"]."', ";
		$strSQL .= "	idUser = '".$_REQUEST["carreraUsuario"]."', ";
		$strSQL .= "	tipo = '".$_REQUEST["carreraTipo"]."', ";
		$strSQL .= "	paloma = '".$_REQUEST["palomaAnillo"]."', ";
		$strSQL .= "	adelanto = '".str_replace(":","",$_REQUEST["carreraAdelanto"])."', ";
		$strSQL .= "	atraso = '".str_replace(":","",$_REQUEST["carreraAtraso"])."', ";
		$strSQL .= "	diaHora = ".$_REQUEST["carreraDiaMarca"].", ";
		$strSQL .= "	horaMarca = '".str_replace(":","",$_REQUEST["carreraHoraMarca"])."', ";
		$strSQL .= "	puntos = 0, ";
		$strSQL .= "	puesto = 0, ";
		$strSQL .= "    mtsMinuto = ".$_REQUEST["mtsMinuto"].", ";
		$strSQL .= "    mtsMinutoReal = ".$_REQUEST["mtsMinutoReal"].", ";
		$strSQL .= "    mtsPalomar = ".$_REQUEST["mtsPuntoSuelta"].", ";
		$strSQL .= "    minRecorridos = ".$_REQUEST["tiempoCorr"].", ";
		if($_REQUEST["carreraItemEspecial"]=="on")
			$strSQL .= "	especial = 'S', ";
		else
			$strSQL .= "	especial = 'N', ";
		$strSQL .= "	puntoCard = '".$_REQUEST["carreraPtoCardinal"]."' ";
		$strSQL .= " WHERE idCarreraItem = ". $_REQUEST["idCarreraItem"];
	}
	
	$DB->Execute($strSQL);
	
	if (!$DB->CompleteTrans())
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = 'Ocurri&oacute; un error al grabar el archivo';
	}
	else
	{
		$arrJSON->status = "OK";
		$arrJSON->msg = 'El registro se guard&oacute; correctamente';
		$arrJSON->ptoCardinal = $_REQUEST["carreraPtoCardinal"];
	}	
	return json_encode($arrJSON);
}

function addOrEdit()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;

	$DB->StartTrans(); // start transaction
	
	if(!isset($_REQUEST["idCarrera"])){
		$strSQL = "INSERT INTO carreras ( ";
		$strSQL .= "	description, ";
		$strSQL .= "	fecha, ";
		$strSQL .= "	diaInicio, ";
		$strSQL .= "	horaInicio, ";
		$strSQL .= "	diaCierre, ";
		$strSQL .= "	horaCierre, ";
		$strSQL .= "	hPuestaSol1, ";
		$strSQL .= "	hSaleSol1, ";
		$strSQL .= "	hPuestaSol2, ";
		$strSQL .= "	hSaleSol2, ";
		$strSQL .= "	hPuestaSol3, ";
		$strSQL .= "	hSaleSol3, ";				
		$strSQL .= "	state, ";
		$strSQL .= "	tipoCarrera, ";
		$strSQL .= "	tipoPaloma, ";
		$strSQL .= "	blockDE ";
		$strSQL .= "	) VALUES ( ";
		$strSQL .= "	'".mb_strtoupper($_REQUEST["carreraName"], "UTF-8")."', ";
		$strSQL .= "	'".empaquetarFecha($_REQUEST["carreraFecha"])."', ";
		$strSQL .= "	'".$_REQUEST["diaApertura"]."', ";
		$strSQL .= "	'".str_replace(":","",$_REQUEST["horaApertura"])."', ";
		$strSQL .= "	'".$_REQUEST["diaCierre"]."', ";
		$strSQL .= "	'".str_replace(":","",$_REQUEST["horaCierre"])."', ";
		$strSQL .= "	'".str_replace(":","",$_REQUEST["horaPuestaSol1"])."', ";
		$strSQL .= "	'".str_replace(":","",$_REQUEST["horaSaleSol1"])."', ";
		$strSQL .= "	'".str_replace(":","",$_REQUEST["horaPuestaSol2"])."', ";
		$strSQL .= "	'".str_replace(":","",$_REQUEST["horaSaleSol2"])."', ";
		$strSQL .= "	'".str_replace(":","",$_REQUEST["horaPuestaSol3"])."', ";
		$strSQL .= "	'".str_replace(":","",$_REQUEST["horaSaleSol3"])."', ";
		$strSQL .= "	'".$stateAdd."',";
		$strSQL .= "	'".$_REQUEST["tipoCarrera"]."', ";
		$strSQL .= "	'".$_REQUEST["tipoPalomas"]."', ";
		$strSQL .= "	'".$_REQUEST["blockDE"]."'";
		$strSQL .= "	)";
		
		$DB->Execute($strSQL);
		$insert_ID = $DB->Insert_ID();
		
		$strSQL = "INSERT INTO carrera_ptos ( ";
		$strSQL .= "	idCarrera, ";
		$strSQL .= "	idPto, ";
		$strSQL .= "	descriptionPto, ";
		$strSQL .= "	kms, ";
		$strSQL .= "	idPuntoSuelta, ";
		$strSQL .= "	fechaSuelta, ";
		$strSQL .= "	horaSuelta ";
		$strSQL .= "	) VALUES ( ";
		$strSQL .= "	".$insert_ID.", ";
		$strSQL .= "	'".$idNorte."', ";
		$strSQL .= "	'".mb_strtoupper($_REQUEST["tCarreraNorte"], "UTF-8")."', ";
		$strSQL .= "	'".$_REQUEST["kmsNorte"]."', ";
		$strSQL .= "	".$_REQUEST["carreraNorte"].", ";
		$strSQL .= "	".$_REQUEST["diaSueltaNorte"].", ";
		$strSQL .= "	'".str_replace(":","",$_REQUEST["horaSueltaNorte"])."'";
		$strSQL .= "	)";
		$DB->Execute($strSQL);
		
		
		if($_REQUEST["tCarreraSur"] != "...") {
			$strSQL = "INSERT INTO carrera_ptos ( ";
			$strSQL .= "	idCarrera, ";
			$strSQL .= "	idPto, ";
			$strSQL .= "	descriptionPto, ";
			$strSQL .= "	kms, ";
			$strSQL .= "	idPuntoSuelta, ";
			$strSQL .= "	fechaSuelta, ";
			$strSQL .= "	horaSuelta ";
			$strSQL .= "	) VALUES ( ";
			$strSQL .= "	".$insert_ID.", ";
			$strSQL .= "	'".$idSur."', ";
			$strSQL .= "	'".mb_strtoupper($_REQUEST["tCarreraSur"], "UTF-8")."', ";
			$strSQL .= "	'".$_REQUEST["kmsSur"]."', ";
			$strSQL .= "	".$_REQUEST["carreraSur"].", ";
			$strSQL .= "	".$_REQUEST["diaSueltaSur"].", ";
			$strSQL .= "	'".str_replace(":","",$_REQUEST["horaSueltaSur"])."'";
			$strSQL .= "	)";
			$DB->Execute($strSQL);
		}
		
		if($_REQUEST["tCarreraEste"] != "...") {
			$strSQL = "INSERT INTO carrera_ptos ( ";
			$strSQL .= "	idCarrera, ";
			$strSQL .= "	idPto, ";
			$strSQL .= "	descriptionPto, ";
			$strSQL .= "	kms, ";
			$strSQL .= "	idPuntoSuelta, ";
			$strSQL .= "	fechaSuelta, ";
			$strSQL .= "	horaSuelta ";
			$strSQL .= "	) VALUES ( ";
			$strSQL .= "	".$insert_ID.", ";
			$strSQL .= "	'".$idEste."', ";
			$strSQL .= "	'".mb_strtoupper($_REQUEST["tCarreraEste"], "UTF-8")."', ";
			$strSQL .= "	'".$_REQUEST["kmsEste"]."', ";
			$strSQL .= "	".$_REQUEST["carreraEste"].", ";
			$strSQL .= "	".$_REQUEST["diaSueltaEste"].", ";
			$strSQL .= "	'".str_replace(":","",$_REQUEST["horaSueltaEste"])."'";
			$strSQL .= "	)";
			$DB->Execute($strSQL);
		}
		
		if($_REQUEST["tCarreraOeste"] != "...") {
			$strSQL = "INSERT INTO carrera_ptos ( ";
			$strSQL .= "	idCarrera, ";
			$strSQL .= "	idPto, ";
			$strSQL .= "	descriptionPto, ";
			$strSQL .= "	kms, ";
			$strSQL .= "	idPuntoSuelta, ";
			$strSQL .= "	fechaSuelta, ";
			$strSQL .= "	horaSuelta ";
			$strSQL .= "	) VALUES ( ";
			$strSQL .= "	".$insert_ID.", ";
			$strSQL .= "	'".$idOeste."', ";
			$strSQL .= "	'".mb_strtoupper($_REQUEST["tCarreraOeste"], "UTF-8")."', ";
			$strSQL .= "	'".$_REQUEST["kmsOeste"]."', ";
			$strSQL .= "	".$_REQUEST["carreraOeste"].", ";
			$strSQL .= "	".$_REQUEST["diaSueltaOeste"].", ";
			$strSQL .= "	'".str_replace(":","",$_REQUEST["horaSueltaOeste"])."'";
			$strSQL .= "	)";
			$DB->Execute($strSQL);
		}
	}
	else{
		$rsCarrera = $DB->Execute("SELECT * FROM carreras WHERE idCarrera = ".$_REQUEST["idCarrera"]);
		
		$strSQL = "UPDATE carreras SET ";
		$strSQL .= "	description = '".mb_strtoupper($_REQUEST["carreraName"], "UTF-8")."', ";
		$strSQL .= "	fecha = '".empaquetarFecha($_REQUEST["carreraFecha"])."', ";
		$strSQL .= "	diaInicio = '".$_REQUEST["diaApertura"]."', ";
		$strSQL .= "	horaInicio = '".str_replace(":","",$_REQUEST["horaApertura"])."', ";
		$strSQL .= "	diaCierre = '".$_REQUEST["diaCierre"]."', ";
		$strSQL .= "	horaCierre = '".str_replace(":","",$_REQUEST["horaCierre"])."', ";
		$strSQL .= "	hPuestaSol1 = '".str_replace(":","",$_REQUEST["horaPuestaSol1"])."', ";
		$strSQL .= "	hSaleSol1 = '".str_replace(":","",$_REQUEST["horaSaleSol1"])."', ";
		$strSQL .= "	hPuestaSol2 = '".str_replace(":","",$_REQUEST["horaPuestaSol2"])."', ";
		$strSQL .= "	hSaleSol2 = '".str_replace(":","",$_REQUEST["horaSaleSol2"])."', ";
		$strSQL .= "	hPuestaSol3 = '".str_replace(":","",$_REQUEST["horaPuestaSol3"])."', ";
		$strSQL .= "	hSaleSol3 = '".str_replace(":","",$_REQUEST["horaSaleSol3"])."', ";
		$strSQL .= "	tipoCarrera = '".$_REQUEST["tipoCarrera"]."', ";
		$strSQL .= "	tipoPaloma = '".$_REQUEST["tipoPalomas"]."', ";
		$strSQL .= "	blockDE = '".$_REQUEST["blockDE"]."', ";
		if($rsCarrera->fields('state') != $statePublicado)
			$strSQL .= "	state = '".$stateModify."'";
		else
			$strSQL .= "	state = '".$statePublicado."'";
		$strSQL .= " WHERE idCarrera = ". $_REQUEST["idCarrera"];
		$DB->Execute($strSQL);
		
		//Delete All Items
		$DB->Execute("DELETE FROM carrera_ptos WHERE idCarrera = ".$_REQUEST["idCarrera"]);
		
		$strSQL = "INSERT INTO carrera_ptos ( ";
		$strSQL .= "	idCarrera, ";
		$strSQL .= "	idPto, ";
		$strSQL .= "	descriptionPto, ";
		$strSQL .= "	kms, ";
		$strSQL .= "	idPuntoSuelta, ";
		$strSQL .= "	fechaSuelta, ";
		$strSQL .= "	horaSuelta ";
		$strSQL .= "	) VALUES ( ";
		$strSQL .= "	".$_REQUEST["idCarrera"].", ";
		$strSQL .= "	'".$idNorte."', ";
		$strSQL .= "	'".mb_strtoupper($_REQUEST["tCarreraNorte"], "UTF-8")."', ";
		$strSQL .= "	'".$_REQUEST["kmsNorte"]."', ";
		$strSQL .= "	".$_REQUEST["carreraNorte"].", ";
		$strSQL .= "	".$_REQUEST["diaSueltaNorte"].", ";
		$strSQL .= "	'".str_replace(":","",$_REQUEST["horaSueltaNorte"])."'";
		$strSQL .= "	)";
		$DB->Execute($strSQL);
		
		if($_REQUEST["tCarreraSur"] != "...") {
			$strSQL = "INSERT INTO carrera_ptos ( ";
			$strSQL .= "	idCarrera, ";
			$strSQL .= "	idPto, ";
			$strSQL .= "	descriptionPto, ";
			$strSQL .= "	kms, ";
			$strSQL .= "	idPuntoSuelta, ";
			$strSQL .= "	fechaSuelta, ";
			$strSQL .= "	horaSuelta ";
			$strSQL .= "	) VALUES ( ";
			$strSQL .= "	".$_REQUEST["idCarrera"].", ";
			$strSQL .= "	'".$idSur."', ";
			$strSQL .= "	'".mb_strtoupper($_REQUEST["tCarreraSur"], "UTF-8")."', ";
			$strSQL .= "	'".$_REQUEST["kmsSur"]."', ";
			$strSQL .= "	".$_REQUEST["carreraSur"].", ";
			$strSQL .= "	".$_REQUEST["diaSueltaSur"].", ";
			$strSQL .= "	'".str_replace(":","",$_REQUEST["horaSueltaSur"])."'";
			$strSQL .= "	)";
			$DB->Execute($strSQL);
		}

		if($_REQUEST["tCarreraEste"] != "...") {
			$strSQL = "INSERT INTO carrera_ptos ( ";
			$strSQL .= "	idCarrera, ";
			$strSQL .= "	idPto, ";
			$strSQL .= "	descriptionPto, ";
			$strSQL .= "	kms, ";
			$strSQL .= "	idPuntoSuelta, ";
			$strSQL .= "	fechaSuelta, ";
			$strSQL .= "	horaSuelta ";
			$strSQL .= "	) VALUES ( ";
			$strSQL .= "	".$_REQUEST["idCarrera"].", ";
			$strSQL .= "	'".$idEste."', ";
			$strSQL .= "	'".mb_strtoupper($_REQUEST["tCarreraEste"], "UTF-8")."', ";
			$strSQL .= "	'".$_REQUEST["kmsEste"]."', ";
			$strSQL .= "	".$_REQUEST["carreraEste"].", ";
			$strSQL .= "	".$_REQUEST["diaSueltaEste"].", ";
			$strSQL .= "	'".str_replace(":","",$_REQUEST["horaSueltaEste"])."'";
			$strSQL .= "	)";
			$DB->Execute($strSQL);
		}

		if($_REQUEST["tCarreraOeste"] != "...") {
			$strSQL = "INSERT INTO carrera_ptos ( ";
			$strSQL .= "	idCarrera, ";
			$strSQL .= "	idPto, ";
			$strSQL .= "	descriptionPto, ";
			$strSQL .= "	kms, ";
			$strSQL .= "	idPuntoSuelta, ";
			$strSQL .= "	fechaSuelta, ";
			$strSQL .= "	horaSuelta ";
			$strSQL .= "	) VALUES ( ";
			$strSQL .= "	".$_REQUEST["idCarrera"].", ";
			$strSQL .= "	'".$idOeste."', ";
			$strSQL .= "	'".mb_strtoupper($_REQUEST["tCarreraOeste"], "UTF-8")."', ";
			$strSQL .= "	'".$_REQUEST["kmsOeste"]."', ";
			$strSQL .= "	".$_REQUEST["carreraOeste"].", ";
			$strSQL .= "	".$_REQUEST["diaSueltaOeste"].", ";
			$strSQL .= "	'".str_replace(":","",$_REQUEST["horaSueltaOeste"])."' ";
			$strSQL .= "	)";
			$DB->Execute($strSQL);
		}
	}
	
	if (!$DB->CompleteTrans())
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = 'Ocurri&oacute; un error al grabar el archivo';
	}
	else
	{
		$arrJSON->status = "OK";
		$arrJSON->msg = 'El registro se guard&oacute; correctamente';
	}	
	return json_encode($arrJSON);
}

function del()
{
	require("includes/constants.php");
	
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$DB->StartTrans(); // start transaction
	$DB->Execute("UPDATE carreras SET state='$stateErase' where idCarrera=" . $_REQUEST["idCarrera"]); // execute query

	if (!$DB->CompleteTrans())
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = 'Ocurri&oacute; un error al eliminar';
	}
	else
	{
		$arrJSON->status = "OK";
		$arrJSON->msg = 'El registro se elimin&oacute; correctamente';
	}	
	return json_encode($arrJSON);
}

function delItem()
{
	require("includes/constants.php");
	
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$DB->StartTrans(); // start transaction
	$DB->Execute("DELETE FROM carreras_items WHERE idCarreraItem = " . $_REQUEST["idCarreraItem"] . " AND puntoCard = '" . $_REQUEST["ptoCardinal"] . "'"); // execute query

	if (!$DB->CompleteTrans())
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = 'Ocurri&oacute; un error al eliminar';
	}
	else
	{
		$arrJSON->status = "OK";
		$arrJSON->msg = 'El registro se elimin&oacute; correctamente';
	}	
	return json_encode($arrJSON);
}

function getUsuarios()
{
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$rsUsers = $DB->Execute("SELECT idUser, userCompleteName FROM users WHERE userState <> '$stateErase' ORDER BY userName");
	
	if($rsUsers->EOF)
		return json_encode(array());
	else
	{
		$i=0;
		while(!$rsUsers->EOF){
			$arrUsers->data[$i]['idUser'] = $rsUsers->fields(0);
			$arrUsers->data[$i++]['userCompleteName'] = $rsUsers->fields(1);
			$rsUsers->MoveNext();
		}
	}
	return json_encode($arrUsers->data);
}

function getPuntosSuelta()
{
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$rsPtoSuelta = $DB->Execute("SELECT idPtoSuelta, description FROM ptosuelta WHERE state <> '$stateErase' ORDER BY description");
	
	if($rsPtoSuelta->EOF)
		return json_encode(array());
	else
	{
		$i=0;
		while(!$rsPtoSuelta->EOF){
			$arrPtoSuelta->data[$i]['idPtoSuelta'] = $rsPtoSuelta->fields(0);
			$arrPtoSuelta->data[$i++]['description'] = $rsPtoSuelta->fields(1);
			$rsPtoSuelta->MoveNext();
		}
	}
	return json_encode($arrPtoSuelta->data);
}

function getKmsPuntosSuelta()
{
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$rsPtoSuelta = $DB->Execute("SELECT kms FROM ptosuelta WHERE idPtoSuelta = ". $_REQUEST["idPtoSuelta"]);
	
	if($rsPtoSuelta->EOF)
		return json_encode(array());
	else {
		$arrJSON->kms = $rsPtoSuelta->fields(0);
		return json_encode($arrJSON);
	}
}

function getPalomas()
{
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$rsPalomas = $DB->Execute("SELECT idPaloma, palomaAnillo FROM palomas WHERE idUser = " . $_REQUEST["idUser"] . " ORDER BY palomaAnillo");
	
	$i=0;
	if($rsPalomas->EOF)
		return json_encode(array());
	else {
		while(!$rsPalomas->EOF){
			$arrPalomas->data[$i]['idPaloma'] = $rsPalomas->fields(0);
			$arrPalomas->data[$i++]['palomaAnillo'] = $rsPalomas->fields(1);
			$rsPalomas->MoveNext();
		}
	
		return json_encode($arrPalomas->data);
	}
}

function savePaloma()
{
	require("includes/constants.php");
	
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$sSQL = "SELECT * FROM palomas WHERE palomaAnillo = '".$_REQUEST["anilloPaloma"]."' AND idUser = ". $_REQUEST["idUser"];
	
	$rsPalomas = $DB->Execute($sSQL);
	
	if(!$rsPalomas->EOF)
		return json_encode(array());
	else {
		$strSQL = "INSERT INTO palomas ( ";
		$strSQL .= "	palomaAnillo, ";
		$strSQL .= "	palomaName, ";
		$strSQL .= "	palomaState, ";
		$strSQL .= "	palomaAnno, ";
		$strSQL .= "	palomaSexo, ";
		$strSQL .= "	palomaColor, ";
		$strSQL .= "	idUser ";
		$strSQL .= "	) VALUES ( ";
		$strSQL .= "	'".mb_strtoupper($_REQUEST["anilloPaloma"], "UTF-8")."', ";
		$strSQL .= "	'".mb_strtoupper($_REQUEST["anilloPaloma"], "UTF-8")."', ";
		$strSQL .= "	'".$stateAdd."', ";
		$strSQL .= "	'".date("Y")."', ";
		$strSQL .= "	'M', ";
		$strSQL .= "	'', ";
		$strSQL .= "	".$_REQUEST["idUser"];
		$strSQL .= "	)";
	
		$DB->Execute($strSQL);
		return json_encode(array());
	}
}

function editCarreras()
{
	require("includes/constants.php");
		
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$rsCarreras = $DB->Execute("SELECT * FROM carreras WHERE state <> '$stateErase' AND idCarrera=" . $_REQUEST["idCarrera"]); // execute query
						
	if(!$rsCarreras->EOF){
		$joCarreras->data['carreraName'] = $rsCarreras->fields("description");
		$joCarreras->data['carreraFecha'] = desempaquetarFecha($rsCarreras->fields("fecha"));
		$joCarreras->data['diaApertura'] = $rsCarreras->fields("diaInicio");
		$joCarreras->data['horaApertura'] = substr($rsCarreras->fields("horaInicio"),0,2).":".substr($rsCarreras->fields("horaInicio"),2,2).":".substr($rsCarreras->fields("horaInicio"),4,2);
		$joCarreras->data['diaCierre'] = $rsCarreras->fields("diaCierre");
		$joCarreras->data['horaCierre'] = substr($rsCarreras->fields("horaCierre"),0,2).":".substr($rsCarreras->fields("horaCierre"),2,2).":".substr($rsCarreras->fields("horaCierre"),4,2);
		$joCarreras->data['horaPuestaSol1'] = substr($rsCarreras->fields("hPuestaSol1"),0,2).":".substr($rsCarreras->fields("hPuestaSol1"),2,2).":".substr($rsCarreras->fields("hPuestaSol1"),4,2);
		$joCarreras->data['horaSaleSol1'] = substr($rsCarreras->fields("hSaleSol1"),0,2).":".substr($rsCarreras->fields("hSaleSol1"),2,2).":".substr($rsCarreras->fields("hSaleSol1"),4,2);
		$joCarreras->data['horaPuestaSol2'] = substr($rsCarreras->fields("hPuestaSol2"),0,2).":".substr($rsCarreras->fields("hPuestaSol2"),2,2).":".substr($rsCarreras->fields("hPuestaSol2"),4,2);
		$joCarreras->data['horaSaleSol2'] = substr($rsCarreras->fields("hSaleSol2"),0,2).":".substr($rsCarreras->fields("hSaleSol2"),2,2).":".substr($rsCarreras->fields("hSaleSol2"),4,2);
		$joCarreras->data['horaPuestaSol3'] = substr($rsCarreras->fields("hPuestaSol3"),0,2).":".substr($rsCarreras->fields("hPuestaSol3"),2,2).":".substr($rsCarreras->fields("hPuestaSol3"),4,2);
		$joCarreras->data['horaSaleSol3'] = substr($rsCarreras->fields("hSaleSol3"),0,2).":".substr($rsCarreras->fields("hSaleSol3"),2,2).":".substr($rsCarreras->fields("hSaleSol3"),4,2);
		$joCarreras->data['tipoCarrera'] = $rsCarreras->fields("tipoCarrera");
		$joCarreras->data['tipoPaloma'] = $rsCarreras->fields("tipoPaloma");
		$joCarreras->data['blockDE'] = $rsCarreras->fields("blockDE");
				
		$rsCarrerasPto = $DB->Execute("SELECT * FROM carrera_ptos WHERE idCarrera=" . $_REQUEST["idCarrera"]); // execute query
		
		while (!$rsCarrerasPto->EOF)
		{
			switch ($rsCarrerasPto->fields(2)) {
				case $idNorte:
					$joCarreras->data['idPtoCarreraNorte'] = $rsCarrerasPto->fields('idPuntoSuelta');
					$joCarreras->data['carreraNorte'] = $rsCarrerasPto->fields('descriptionPto');
					$joCarreras->data['kmsNorte'] = $rsCarrerasPto->fields('kms');
					$joCarreras->data['diaSueltaNorte'] = $rsCarrerasPto->fields('fechaSuelta');
					$joCarreras->data['horaSueltaNorte'] = substr($rsCarrerasPto->fields("horaSuelta"),0,2).":".substr($rsCarrerasPto->fields("horaSuelta"),2,2).":".substr($rsCarrerasPto->fields("horaSuelta"),4,2);
					break;
					
				case $idSur:
					$joCarreras->data['idPtoCarreraSur'] = $rsCarrerasPto->fields('idPuntoSuelta');
					$joCarreras->data['carreraSur'] = $rsCarrerasPto->fields('descriptionPto');
					$joCarreras->data['kmsSur'] = $rsCarrerasPto->fields('kms');
					$joCarreras->data['diaSueltaSur'] = $rsCarrerasPto->fields('fechaSuelta');
					$joCarreras->data['horaSueltaSur'] = substr($rsCarrerasPto->fields("horaSuelta"),0,2).":".substr($rsCarrerasPto->fields("horaSuelta"),2,2).":".substr($rsCarrerasPto->fields("horaSuelta"),4,2);
					break;
					
				case $idEste:
					$joCarreras->data['idPtoCarreraEste'] = $rsCarrerasPto->fields('idPuntoSuelta');
					$joCarreras->data['carreraEste'] = $rsCarrerasPto->fields('descriptionPto');
					$joCarreras->data['kmsEste'] = $rsCarrerasPto->fields('kms');
					$joCarreras->data['diaSueltaEste'] = $rsCarrerasPto->fields('fechaSuelta');
					$joCarreras->data['horaSueltaEste'] = substr($rsCarrerasPto->fields("horaSuelta"),0,2).":".substr($rsCarrerasPto->fields("horaSuelta"),2,2).":".substr($rsCarrerasPto->fields("horaSuelta"),4,2);
					break;
					
				case $idOeste:
					$joCarreras->data['idPtoCarreraOeste'] = $rsCarrerasPto->fields('idPuntoSuelta');
					$joCarreras->data['carreraOeste'] = $rsCarrerasPto->fields('descriptionPto');
					$joCarreras->data['kmsOeste'] = $rsCarrerasPto->fields('kms');
					$joCarreras->data['diaSueltaOeste'] = $rsCarrerasPto->fields('fechaSuelta');
					$joCarreras->data['horaSueltaOeste'] = substr($rsCarrerasPto->fields("horaSuelta"),0,2).":".substr($rsCarrerasPto->fields("horaSuelta"),2,2).":".substr($rsCarrerasPto->fields("horaSuelta"),4,2);
					break;
			}
			$rsCarrerasPto->MoveNext();
		}
		
		return json_encode($joCarreras->data);
	}
	else
		return json_encode('');
}

function batchFileUploaded()
{
	require("includes/constants.php");
	require("includes/dbf_class.php");
		
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	try
	{
		//Abro el DBF a Procesar
		$dbf = new dbf_class('import/'.$_REQUEST["fileName"]);
		
		//Columnas a Validar
		$colValidate = array('FECHA', 'TIPO', 'PALOMAR', 'PALOMA', 'HORA', 'PUNTOS', 'NROPUES', 'ESPECIAL', 'CALKMT', 'METROPA', 'CORREGIDO', 'ADELANTO', 'ATRASO', 'DIAHO');
		$dbfOK = TRUE;
		foreach($colValidate as $value)
		{
			if(!in_array($value, $dbf->dbf_col_names))
			{
				$dbfOK = FALSE;
				break;
			}
		}
			
		if(!$dbfOK)
		{
			$arrJSON->status = "ERROR";
			$arrJSON->msg = 'Ocurri&oacute; un error al Importar las Carreras, DBF Invalido';
			return json_encode($arrJSON);
		}
		
		$num_rec=$dbf->dbf_num_rec;
		$fechaCarrera = empaquetarFecha($_REQUEST['fechaCarrera']);
		
		$DB->StartTrans(); // start transaction
		
		$DB->Execute("DELETE FROM carreras_items WHERE puntoCard = '".$_REQUEST['ptoCardinal']."' AND idCarrera=".$_REQUEST['idCarrera']);
		
	  	for ($iLoop = 0; $iLoop < $num_rec; $iLoop++) 
	  	{
	  		$rowData = $dbf->getRowByName($iLoop);
			
			if($fechaCarrera == $rowData["FECHA"])
			{
		  		$strSQL = "INSERT INTO carreras_items ( ";
				$strSQL .= "	idCarrera, ";
				$strSQL .= "	idUser, ";
				$strSQL .= "	tipo, ";
				$strSQL .= "	paloma, ";
				$strSQL .= "	horaMarca, ";
				$strSQL .= "	adelanto, ";
				$strSQL .= "	atraso, ";
				$strSQL .= "	diaHora, ";
				$strSQL .= "	puntos, ";
				$strSQL .= "	puesto, ";
				$strSQL .= "	especial, ";
				$strSQL .= "	puntoCard, ";
				$strSQL .= "	mtsMinuto, ";
				$strSQL .= "	mtsPalomar, ";
				$strSQL .= "	minRecorridos ";
				$strSQL .= "	) VALUES ( ";
				$strSQL .= "	".$_REQUEST['idCarrera'].", ";
				$strSQL .= "	'".$rowData['PALOMAR']."', ";
				$strSQL .= "	'".$rowData['TIPO']."', ";
				$strSQL .= "	'".$rowData['PALOMA']."', ";
				$strSQL .= "	'".$rowData['HORA']."', ";
				$strSQL .= "	'".$rowData['ADELANTO']."', ";
				$strSQL .= "	'".$rowData['ATRASO']."', ";
				$strSQL .= "	'".$rowData['DIAHO']."', ";
				$strSQL .= "	'".$rowData['PUNTOS']."', ";
				$strSQL .= "	'".$rowData['NROPUES']."', ";
				if($rowData["ESPECIAL"] == 'E')
					$strSQL .= "	'S', ";
				else
					$strSQL .= "	'N', ";
				$strSQL .= "	'".$_REQUEST['ptoCardinal']."',";
				$strSQL .= "	'".$rowData['CALKMT']."',";
				$strSQL .= "	'".$rowData['METROPA']."',";
				$strSQL .= "	'".$rowData['CORREGIDO']."'";
				$strSQL .= "	)";
	
			  	$DB->Execute($strSQL);
			}
		}
		
		if (!$DB->CompleteTrans())
		{
			$arrJSON->status = "ERROR";
			$arrJSON->msg = 'Ocurri&oacute; un error al Importar las Carreras';
		}
		else {
			$arrJSON->status = "OK";
			$arrJSON->msg = 'Las Carreras se Importaron con Exito';			
		}
		return json_encode($arrJSON);
	}
	catch(Exception $e) {
		$arrJSON->status = "ERROR";
		$arrJSON->msg = 'Ocurri&oacute; un error al Importar las Carreras';
		return json_encode($arrJSON);
	}
}

function calcularPuntajeCarrera()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	//Valido que Exista la Carrera
	$rsCarrera = $DB->Execute("SELECT * FROM carrera_ptos WHERE idCarrera = ".$_REQUEST["idCarrera"]);
	
	if($rsCarrera->EOF)
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = 'Ocurri&oacute; un error al Generar el Puntaje de la Carrera';
		return json_encode($arrJSON);
	}
	
	//Valido que tenga Items Cargados
	$rsCarreraItem = $DB->Execute("SELECT * FROM carreras_items WHERE idCarrera = ".$_REQUEST["idCarrera"]." ORDER BY minRecorridos DESC");
	if($rsCarreraItem->EOF)
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = 'No hay Items Cargados en la Carrera';
		return json_encode($arrJSON);
	}
	
	$rsConfig = $DB->Execute("SELECT * FROM config ORDER BY idConfig DESC");
	if($rsConfig->EOF) {
		$puntosPorcentaje = $ptoPorcentaje;
		$canPalomares = $canPalomaresDefault;
	}
	else {
		$canPalomares = $rsConfig->fields('cantPalomares');
		$puntosPorcentaje = $rsConfig->fields('puntosPorcentaje');	
	}
	
	//Calculo el Corte del Puntaje
	//$rsCorte = $DB->Execute("SELECT COUNT(*) corte FROM (SELECT DISTINCT idUser FROM carreras_items WHERE idCarrera = ".$_REQUEST["idCarrera"].") cortePuntaje");
	//$corte = $rsCorte->fields('corte');
	
	$canPalomas = $_REQUEST["canPalomas"];	
		
	//Calculamos el Corte dependiendo del Tipo de Carrera
	$rsCarreraHeader = $DB->Execute("SELECT * FROM carreras WHERE idCarrera = ".$_REQUEST["idCarrera"]);
	switch ($rsCarreraHeader->fields("tipoCarrera"))
	{
		case $tipoCarreraGeneral:
			$corte = round($canPalomas / $puestosGeneral, 0);
			$premio = round($canPalomas / $canPtosCardinales, 0);
			break;
		case $tipoCarreraFondo:
			$corte = round($canPalomas / $puestosFondo, 0);
			$premio = round($canPalomas / $canPtosCardinales, 0);
			break;
		case $tipoCarreraExtra:
			$corte = round($canPalomas / $puestosExtra, 0);
			$premio = round($canPalomas / $canPtosCardinales, 0);
			break;
		case $tipoCarreraUnaPta:
			$corte = 120;
			$premio = 720;
			break;
		default:
			$corte = round($canPalomas / $puestosGeneral, 0);
			$premio = round($canPalomas / $canPtosCardinales, 0);
			break;
	}
	
	$DB->StartTrans(); // start transaction
	
	//Actualizo todo los puntos y puestos para esa Carrera
	$DB->Execute("UPDATE carreras SET palomasLlegadas = $canPalomas WHERE idCarrera = ".$_REQUEST["idCarrera"]);
	$DB->Execute("UPDATE carreras_items SET puntos = 0, puesto = 0 WHERE idCarrera = ".$_REQUEST["idCarrera"]);
	
	while(!$rsCarrera->EOF) {
		
		$kmsPunto = $rsCarrera->fields('kms');
		
		//Calculo en Puntaje segun los Kms de punto de suelta
		$rsPuntos = $DB->Execute("SELECT * FROM individuales_puntaje WHERE $kmsPunto BETWEEN kmsDesde AND kmsHasta");
		if($rsCarreraHeader->fields("tipoCarrera") == $tipoCarreraUnaPta)
			$ptos = $premio;
		else
			$ptos = $premio * $rsPuntos->fields('multiplica');
		$descuenta = $rsPuntos->fields('baja');
				
		$rsCarreraItem = $DB->Execute("SELECT * FROM carreras_items WHERE idCarrera = ".$_REQUEST["idCarrera"]." AND puntoCard = '".$rsCarrera->fields('idPto')."' ORDER BY mtsMinutoReal DESC");

		$puesto = 1;
		while(!$rsCarreraItem->EOF) {
			if($puesto > $corte)
				break;

			if($puesto == 1){
				$ptosPrimerPuesto = $ptos + $ptos * $puntosPorcentaje / 100;
				//hago el UPDATE a la base de datos
				$strSQL = "UPDATE carreras_items SET puntos = $ptosPrimerPuesto, puesto = $puesto WHERE idCarreraItem = ".$rsCarreraItem->fields('idCarreraItem');
				$DB->Execute($strSQL);
				
			}
			else {
				$ptos = $ptos - $descuenta;
				//hago el UPDATE a la base de datos
				$strSQL = "UPDATE carreras_items SET puntos = $ptos, puesto = $puesto WHERE idCarreraItem = ".$rsCarreraItem->fields('idCarreraItem');
				$DB->Execute($strSQL);
			}
			
			$puesto++;
			$rsCarreraItem->MoveNext();	
		}
		
		$rsCarrera->MoveNext();
	}
	
	if (!$DB->CompleteTrans())
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = 'Ocurri&oacute; un error al Generar el Puntaje de la Carrera';
	}
	else {
		$arrJSON->status = "OK";
		$arrJSON->msg = 'Los Puntos para la Carreras se Generaron con Exito';			
	}
	return json_encode($arrJSON);
}

function publicarResultados()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$DB->StartTrans(); // start transaction
	
	$rsCarrera = $DB->Execute("SELECT * FROM carreras WHERE idCarrera = ".$_REQUEST["idCarrera"]);
	
	if($rsCarrera->EOF)
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = 'Ocurri&oacute; un error al publicar la Carrera';
		return json_encode($arrJSON);
	}
	
	$tipoCarrera = $rsCarrera->fields('tipoCarrera');
	
	$rsCarreraPtos = $DB->Execute("SELECT * FROM carrera_ptos WHERE idCarrera = ".$_REQUEST["idCarrera"]);
	
	$ptosEquipo = 0;
	while(!$rsCarreraPtos->EOF)
	{
		$kmsPunto = $rsCarreraPtos->fields('kms');
		if($tipoCarrera == $tipoCarreraFondo)
			$rsPuntos = $DB->Execute("SELECT * FROM equipos_puntos_fondo WHERE $kmsPunto BETWEEN kmsDesde AND kmsHasta");
		else
			$rsPuntos = $DB->Execute("SELECT * FROM equipos_puntos WHERE $kmsPunto BETWEEN kmsDesde AND kmsHasta");
		
		$ptosEquipo += $rsPuntos->fields('ptos');
		$rsCarreraPtos->MoveNext();
	}
	
	if($tipoCarrera != $tipoCarreraUnaPta) {
		if($tipoCarrera == $tipoCarreraFondo) {
			$ptosPrimeraPos = intval(($ptosEquipo * $_SESSION['cantPalomaresFondo']) / $canPtosCardinales);
			$ptosDesc = round($ptosEquipo / 2);
			
			$rsCanEquipos = $DB->Execute("SELECT TRUNCATE((palomasLlegadas/3)/2,0)+1 canPalomares FROM carreras WHERE idCarrera = " . $_REQUEST["idCarrera"]);
			$canPtosEquipos = $rsCanEquipos->fields('canPalomares');
		}
		else {
			$ptosPrimeraPos = ($ptosEquipo * $_SESSION['cantPalomares']) / $canPtosCardinales;
			$ptosDesc = round($ptosEquipo / $canPtosCardinales);
			
			$rsCanEquipos = $DB->Execute("SELECT TRUNCATE((palomasLlegadas/4)/2,0) canPalomares FROM carreras WHERE idCarrera = " . $_REQUEST["idCarrera"]);
			$canPtosEquipos = $rsCanEquipos->fields('canPalomares');
		}
		
		//Borro la tabla Equipos_palomas de la carrera seleccionada
		$DB->Execute("DELETE FROM equipos_palomas WHERE idCarrera = ".$_REQUEST["idCarrera"]);
		
		$strSQL = "SELECT idUser, MIN(CanPalomasPtoCard) canEquipos FROM ( 
						SELECT idUser,  COUNT(puntoCard) As CanPalomasPtoCard FROM carreras_items
						WHERE idCarrera = ".$_REQUEST["idCarrera"]." 
						GROUP BY idUser, puntoCard 
					) canEquipos
					GROUP BY idUser";
		
		$rsEquipos = $DB->Execute($strSQL);
		
		//Puntos Cardinales Ingresados
		$ptoCard = array();
		$strSQL = "SELECT * FROM carrera_ptos WHERE idCarrera = ".$_REQUEST["idCarrera"];
		$rsPtoCard = $DB->Execute($strSQL);
		while(!$rsPtoCard->EOF) {
			array_push($ptoCard, $rsPtoCard->fields('idPto'));
			$rsPtoCard->MoveNext();
		}
		
		while(!$rsEquipos->EOF)
		{
			$canEquipos = $rsEquipos->fields('canEquipos');
			
			//Verifico la formacion de los Equipos
			$esEquipo = true;
			for ($x=0;$x<count($ptoCard); $x++) {
				$strSQL = "SELECT COUNT(*) FROM carreras_items WHERE idUser = ".$rsEquipos->fields('idUser')." AND idCarrera = ".$_REQUEST["idCarrera"]." AND puntoCard = '$ptoCard[$x]' Order By puntoCard, horaMarca";
				$rsCountPtoCard = $DB->Execute($strSQL);
				
				if($rsCountPtoCard->fields(0)<$canEquipos) {
					$esEquipo = false;
					break;
				}
			}
			
			if($esEquipo)
			{
				$strSQL = "SELECT idCarrera, idUser, puntoCard, paloma, horaMarca, mtsMinuto, mtsPalomar, minRecorridos FROM carreras_items WHERE idUser = ".$rsEquipos->fields('idUser')." AND idCarrera = ".$_REQUEST["idCarrera"]." Order By puntoCard, minRecorridos";
				$rsCarrreraItem = $DB->Execute($strSQL);
				
				$ptoCardinal = '';
				$countEquipos = 1;
				while(!$rsCarrreraItem->EOF)
				{
					if($ptoCardinal == '') {
						$ptoCardinal = $rsCarrreraItem->fields('puntoCard');
					}
					elseif($ptoCardinal != $rsCarrreraItem->fields('puntoCard')) {
						$ptoCardinal = $rsCarrreraItem->fields('puntoCard');
						$countEquipos = 1;
					}
					
					if($countEquipos<=$canEquipos)
					{
						$strSQL = "INSERT INTO equipos_palomas ( ";
						$strSQL .= "	idCarrera, ";
						$strSQL .= "	idUser, ";
						$strSQL .= "	puntoCard, ";
						$strSQL .= "	paloma, ";
						$strSQL .= "	nroEquipo, ";
						$strSQL .= "	mtsPalomar, ";
						$strSQL .= "	horaMarca, ";
						$strSQL .= "	mtsMinuto, ";
						$strSQL .= "	minRecorridos";
						$strSQL .= "	) VALUES ( ";
						$strSQL .= "	".$rsCarrreraItem->fields('idCarrera').", ";
						$strSQL .= "	".$rsCarrreraItem->fields('idUser').", ";
						$strSQL .= "	'".$rsCarrreraItem->fields('puntoCard')."', ";
						$strSQL .= "	'".$rsCarrreraItem->fields('paloma')."', ";
						$strSQL .= "	".$countEquipos.", ";
						$strSQL .= "	".$rsCarrreraItem->fields('mtsPalomar').", ";
						$strSQL .= "	'".$rsCarrreraItem->fields('horaMarca')."', ";
						$strSQL .= "	".$rsCarrreraItem->fields('mtsMinuto').", ";
						$strSQL .= "	".$rsCarrreraItem->fields('minRecorridos');
						$strSQL .= "	)";
						
						$DB->Execute($strSQL);
											
						$countEquipos++;
					}
					
					$rsCarrreraItem->MoveNext();
				}
			}
	
			$rsEquipos->MoveNext();
		}
	
		//BORRO LOS EQUIPOS INCOMPLETOS
		$strSQL = "SELECT DISTINCT idUser, nroEquipo FROM equipos_palomas GROUP BY idUser, nroEquipo HAVING COUNT(nroEquipo) < ".count($ptoCard);
		$rsEquiposIncompletos = $DB->Execute($strSQL);
		while(!$rsEquiposIncompletos->EOF) {
			$DB->Execute("DELETE FROM equipos_palomas WHERE idUser = ".$rsEquiposIncompletos->fields("idUser")." AND nroEquipo = ".$rsEquiposIncompletos->fields("nroEquipo"));
			$rsEquiposIncompletos->MoveNext();
		}
		
		$DB->Execute("DELETE FROM equipos WHERE fecha = '".$rsCarrera->fields("fecha")."'");
		
		//Publicar Resultados de Equipos
		$strSQL = "SELECT *, Puntos - (PuntosDesc * (Pos-1)) As PuntosTotal FROM (
						SELECT @rownum := @rownum + 1 As Pos, equiposParcial.* FROM (
							SELECT idUser, userCompleteName, userLocalidad, SUM(maxMtsPalomar) As MtsPalomar, SUM(maxMtsPalomar)/SUM(minRecorridos) As MtsMinuto, $ptosPrimeraPos As Puntos, $ptosDesc As PuntosDesc, nroEquipo FROM (
								SELECT ci.idUser, userCompleteName, userLocalidad, paloma, nroEquipo, puntoCard, MAX(mtsPalomar) As maxMtsPalomar, MAX(mtsMinuto) As maxMtsMinuto, minRecorridos, cp.kms FROM equipos_palomas ci
								INNER JOIN carrera_ptos cp ON cp.idCarrera = ci.idCarrera And cp.idPto = ci.puntoCard
								INNER JOIN carreras c ON ci.idCarrera = c.idCarrera
								INNER JOIN users u ON u.idUser = ci.idUser
								WHERE c.fecha = '".$rsCarrera->fields("fecha")."'
								Group By idUser, puntoCard, nroEquipo) resultadoParcial
							Group By idUser, nroEquipo
							Order By MtsMinuto DESC
						) equiposParcial, (SELECT @rownum:=0) r
				) resultadoTotal LIMIT $canPtosEquipos";
		
		$rsEquipos = $DB->Execute($strSQL);
		
		while(!$rsEquipos->EOF)
		{
			if($rsEquipos->fields('PuntosTotal')>=0)
			{
				$strSQL = "INSERT INTO equipos ( ";
				$strSQL .= "	fecha, ";
				$strSQL .= "	posicion, ";
				$strSQL .= "	idUser, ";
				$strSQL .= "	mtsPalomar, ";
				$strSQL .= "	mtsMinuto, ";
				$strSQL .= "	puntos, ";
				$strSQL .= "	nroEquipo, ";
				$strSQL .= "    tipoCarrera ";
				$strSQL .= "	) VALUES ( ";
				$strSQL .= "	'".$rsCarrera->fields('fecha')."', ";
				$strSQL .= "	".$rsEquipos->fields('Pos').", ";
				$strSQL .= "	".$rsEquipos->fields('idUser').", ";
				$strSQL .= "	".$rsEquipos->fields('MtsPalomar').", ";
				$strSQL .= "	".round($rsEquipos->fields('MtsMinuto'), 3).", ";
				$strSQL .= "	".$rsEquipos->fields('PuntosTotal').", ";
				$strSQL .= "	".$rsEquipos->fields('nroEquipo').", ";
				$strSQL .= "	'".$tipoCarrera."'";
				$strSQL .= "	)";
			
				$DB->Execute($strSQL);
			}
			
			$rsEquipos->MoveNext();
		}
	
		//Borro la tabla Especial_palomas de la carrera seleccionada
		$DB->Execute("DELETE FROM especial_palomas WHERE idCarrera = ".$_REQUEST["idCarrera"]);
		
		$strSQL = "SELECT idUser, MIN(CanPalomasPtoCard) canEquipos FROM ( 
						SELECT idUser,  COUNT(puntoCard) As CanPalomasPtoCard FROM carreras_items
						WHERE idCarrera = ".$_REQUEST["idCarrera"]." AND especial = 'S'
						GROUP BY idUser, puntoCard 
					) canEquipos
					GROUP BY idUser";
		
		$rsEquipos = $DB->Execute($strSQL);
		
		while(!$rsEquipos->EOF)
		{
			$canEquipos = $rsEquipos->fields('canEquipos');
			
			//Verifico la formacion de los Equipos
			$esEquipo = true;
			for ($x=0;$x<count($ptoCard); $x++) {
				$strSQL = "SELECT COUNT(*) FROM carreras_items WHERE idUser = ".$rsEquipos->fields('idUser')." AND especial = 'S' AND idCarrera = ".$_REQUEST["idCarrera"]." AND puntoCard = '$ptoCard[$x]' Order By puntoCard, horaMarca";
				$rsCountPtoCard = $DB->Execute($strSQL);
				
				if($rsCountPtoCard->fields(0)<$canEquipos) {
					$esEquipo = false;
					break;
				}
			}
			
			if($esEquipo)
			{
				$strSQL = "SELECT idCarrera, idUser, puntoCard, paloma, horaMarca, mtsMinuto, mtsPalomar, minRecorridos FROM carreras_items WHERE idUser = ".$rsEquipos->fields('idUser')." AND especial = 'S' AND idCarrera = ".$_REQUEST["idCarrera"]." Order By puntoCard, minRecorridos";
				$rsCarrreraItem = $DB->Execute($strSQL);
				
				$ptoCardinal = '';
				$countEquipos = 1;
				while(!$rsCarrreraItem->EOF)
				{
					if($ptoCardinal == '') {
						$ptoCardinal = $rsCarrreraItem->fields('puntoCard');
					}
					elseif($ptoCardinal != $rsCarrreraItem->fields('puntoCard')) {
						$ptoCardinal = $rsCarrreraItem->fields('puntoCard');
						$countEquipos = 1;
					}
					
					if($countEquipos<=$canEquipos)
					{
						
						$strSQL = "INSERT INTO especial_palomas ( ";
						$strSQL .= "	idCarrera, ";
						$strSQL .= "	idUser, ";
						$strSQL .= "	puntoCard, ";
						$strSQL .= "	paloma, ";
						$strSQL .= "	nroEquipo, ";
						$strSQL .= "	mtsPalomar, ";
						$strSQL .= "	horaMarca, ";
						$strSQL .= "	mtsMinuto, ";
						$strSQL .= "	minRecorridos ";
						$strSQL .= "	) VALUES ( ";
						$strSQL .= "	".$rsCarrreraItem->fields('idCarrera').", ";
						$strSQL .= "	".$rsCarrreraItem->fields('idUser').", ";
						$strSQL .= "	'".$rsCarrreraItem->fields('puntoCard')."', ";
						$strSQL .= "	'".$rsCarrreraItem->fields('paloma')."', ";
						$strSQL .= "	".$countEquipos.", ";
						$strSQL .= "	".$rsCarrreraItem->fields('mtsPalomar').", ";
						$strSQL .= "	'".$rsCarrreraItem->fields('horaMarca')."', ";
						$strSQL .= "	".$rsCarrreraItem->fields('mtsMinuto').", ";
						$strSQL .= "	".$rsCarrreraItem->fields('minRecorridos')." ";
						$strSQL .= "	)";
							
						$DB->Execute($strSQL);
						
						$countEquipos++;
					}
					
					$rsCarrreraItem->MoveNext();
				}
			}
	
			$rsEquipos->MoveNext();
		}
		
		//BORRO LOS EQUIPOS ESPECIALES INCOMPLETOS
		$strSQL = "SELECT DISTINCT idUser, nroEquipo FROM especial_palomas GROUP BY idUser, nroEquipo HAVING COUNT(nroEquipo) < ".count($ptoCard);
		$rsEquiposIncompletos = $DB->Execute($strSQL);
		while(!$rsEquiposIncompletos->EOF) {
			$DB->Execute("DELETE FROM especial_palomas WHERE idUser = ".$rsEquiposIncompletos->fields("idUser")." AND nroEquipo = ".$rsEquiposIncompletos->fields("nroEquipo"));
			$rsEquiposIncompletos->MoveNext();
		}
		
		$DB->Execute("DELETE FROM especial WHERE fecha = '".$rsCarrera->fields("fecha")."'");
		//Publicar Resultados de Especiales
		$strSQL = "SELECT @rownum := @rownum + 1 AS Pos, especialesParcial.* FROM (
						SELECT idUser, userCompleteName, userLocalidad, SUM(maxMtsPalomar) As MtsPalomar, SUM(maxMtsPalomar)/SUM(minRecorridos) As MtsMinuto, COUNT(paloma) As palomas, nroEquipo FROM (
							SELECT ci.idUser, userCompleteName, userLocalidad, paloma, nroEquipo, puntoCard, MAX(mtsPalomar) As maxMtsPalomar, MAX(mtsMinuto) As maxMtsMinuto, minRecorridos, cp.kms FROM especial_palomas ci
							INNER JOIN carrera_ptos cp ON cp.idCarrera = ci.idCarrera And cp.idPto = ci.puntoCard
							INNER JOIN carreras c ON ci.idCarrera = c.idCarrera
							INNER JOIN users u ON u.idUser = ci.idUser
							WHERE c.fecha = '".$rsCarrera->fields("fecha")."'
							GROUP BY idUser, puntoCard) resultadoParcial
						GROUP BY idUser, nroEquipo
						ORDER BY palomas DESC, MtsMinuto DESC
					) especialesParcial, (SELECT @rownum:=0) r";
					
		$rsEspecial = $DB->Execute($strSQL);
		
		while(!$rsEspecial->EOF)
		{
			$strSQL = "INSERT INTO especial ( ";
			$strSQL .= "	fecha, ";
			$strSQL .= "	posicion, ";
			$strSQL .= "	idUser, ";
			$strSQL .= "	mtsPalomar, ";
			$strSQL .= "	mtsMinuto, ";
			$strSQL .= "	nroEquipo, ";
			$strSQL .= "    tipoCarrera ";
			$strSQL .= "	) VALUES ( ";
			$strSQL .= "	'".$rsCarrera->fields('fecha')."', ";
			$strSQL .= "	".$rsEspecial->fields('Pos').", ";
			$strSQL .= "	".$rsEspecial->fields('idUser').", ";
			$strSQL .= "	".$rsEspecial->fields('MtsPalomar').", ";
			$strSQL .= "	".round($rsEspecial->fields('MtsMinuto'), 3).", ";
			$strSQL .= "	".$rsEspecial->fields('nroEquipo').", ";
			$strSQL .= "	'".$tipoCarrera."'";
			$strSQL .= "	)";
		
			$DB->Execute($strSQL);
			
			$rsEspecial->MoveNext();
		}
	}
	else { //Carrera de una sola punta
		
		//Borro la tabla Especial_palomas de la carrera seleccionada
		$DB->Execute("DELETE FROM especial_palomas WHERE idCarrera = ".$_REQUEST["idCarrera"]);
		
		$strSQL = "SELECT idUser, MIN(CanPalomasPtoCard) canEquipos FROM (
						SELECT idUser,  COUNT(puntoCard) As CanPalomasPtoCard FROM carreras_items
						WHERE idCarrera = ".$_REQUEST["idCarrera"]." AND especial = 'S'
						GROUP BY idUser, puntoCard
					) canEquipos
					GROUP BY idUser";
		
		$rsEquipos = $DB->Execute($strSQL);
		
		while(!$rsEquipos->EOF)
		{
			$canEquipos = $rsEquipos->fields('canEquipos');
			
			if($canEquipos < 4) {
				$rsEquipos->MoveNext();
				continue;
			}
			
			$canEquipos = 4;
				
			//Verifico la formacion de los Equipos
			$esEquipo = true;				
			if($esEquipo)
			{
				$strSQL = "SELECT idCarrera, idUser, puntoCard, paloma, horaMarca, mtsMinuto, mtsPalomar, minRecorridos FROM carreras_items WHERE idUser = ".$rsEquipos->fields('idUser')." AND especial = 'S' AND idCarrera = ".$_REQUEST["idCarrera"]." ORDER BY puntoCard, minRecorridos LIMIT 4";
				$rsCarrreraItem = $DB->Execute($strSQL);
		
				$countEquipos = 1;
				while(!$rsCarrreraItem->EOF)
				{						
					if($countEquipos<=$canEquipos)
					{
						$strSQL = "INSERT INTO especial_palomas ( ";
						$strSQL .= "	idCarrera, ";
						$strSQL .= "	idUser, ";
						$strSQL .= "	puntoCard, ";
						$strSQL .= "	paloma, ";
						$strSQL .= "	nroEquipo, ";
						$strSQL .= "	mtsPalomar, ";
						$strSQL .= "	horaMarca, ";
						$strSQL .= "	mtsMinuto, ";
						$strSQL .= "	minRecorridos ";
						$strSQL .= "	) VALUES ( ";
						$strSQL .= "	".$rsCarrreraItem->fields('idCarrera').", ";
						$strSQL .= "	".$rsCarrreraItem->fields('idUser').", ";
						$strSQL .= "	'".$rsCarrreraItem->fields('puntoCard')."', ";
						$strSQL .= "	'".$rsCarrreraItem->fields('paloma')."', ";
						$strSQL .= "	".'1'.", "; //Un Equipo Especial por Usuario
						$strSQL .= "	".$rsCarrreraItem->fields('mtsPalomar').", ";
						$strSQL .= "	'".$rsCarrreraItem->fields('horaMarca')."', ";
						$strSQL .= "	".$rsCarrreraItem->fields('mtsMinuto').", ";
						$strSQL .= "	".$rsCarrreraItem->fields('minRecorridos')." ";
						$strSQL .= "	)";
							
						$DB->Execute($strSQL);
		
						$countEquipos++;
					}
						
					$rsCarrreraItem->MoveNext();
				}
			}
		
			$rsEquipos->MoveNext();
		}
				
		$DB->Execute("DELETE FROM especial WHERE fecha = '".$rsCarrera->fields("fecha")."'");
		//Publicar Resultados de Especiales
		$strSQL = "SELECT @rownum := @rownum + 1 AS Pos, especialesParcial.* FROM (
						SELECT idUser, userCompleteName, userLocalidad, mtsPalomar, AVG(mtsMinuto) As MtsMinuto, COUNT(paloma) As palomas, nroEquipo FROM (
							SELECT ci.idUser, userCompleteName, userLocalidad, paloma, nroEquipo, puntoCard, mtsPalomar, mtsMinuto, minRecorridos, cp.kms FROM especial_palomas ci
							INNER JOIN carrera_ptos cp ON cp.idCarrera = ci.idCarrera And cp.idPto = ci.puntoCard
							INNER JOIN carreras c ON ci.idCarrera = c.idCarrera
							INNER JOIN users u ON u.idUser = ci.idUser
							WHERE c.fecha = '".$rsCarrera->fields("fecha")."') resultadoParcial
						GROUP BY idUser, nroEquipo
						ORDER BY palomas DESC, MtsMinuto DESC
					) especialesParcial, (SELECT @rownum:=0) r";
			
		$rsEspecial = $DB->Execute($strSQL);
		
		while(!$rsEspecial->EOF)
		{
			$strSQL = "INSERT INTO especial ( ";
			$strSQL .= "	fecha, ";
			$strSQL .= "	posicion, ";
			$strSQL .= "	idUser, ";
			$strSQL .= "	mtsPalomar, ";
			$strSQL .= "	mtsMinuto, ";
			$strSQL .= "	nroEquipo, ";
			$strSQL .= "    tipoCarrera ";
			$strSQL .= "	) VALUES ( ";
			$strSQL .= "	'".$rsCarrera->fields('fecha')."', ";
			$strSQL .= "	".$rsEspecial->fields('Pos').", ";
			$strSQL .= "	".$rsEspecial->fields('idUser').", ";
			$strSQL .= "	".$rsEspecial->fields('mtsPalomar').", ";
			$strSQL .= "	".round($rsEspecial->fields('MtsMinuto'), 3).", ";
			$strSQL .= "	".$rsEspecial->fields('nroEquipo').", ";
			$strSQL .= "	'".$tipoCarrera."'";
			$strSQL .= "	)";
		
			$DB->Execute($strSQL);
				
			$rsEspecial->MoveNext();
		}
	}
	
	//Actualizo la Carrera en estado Publicado
	$DB->Execute("UPDATE carreras SET state='$statePublicado' WHERE idCarrera=" . $_REQUEST["idCarrera"]); // execute query

	$arrJSON = new stdClass();
	if (!$DB->CompleteTrans())
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = 'Ocurri&oacute; un error al Publicar la Carrera';
	}
	else
	{
		$arrJSON->status = "OK";
		$arrJSON->msg = 'El Carrera se Public&oacute; correctamente';
	}	
	return json_encode($arrJSON);
}

function viewCalcPuntos()
{
	require("includes/constants.php");
	
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$rsCarreras = $DB->Execute("SELECT * FROM carreras WHERE idCarrera = " . $_REQUEST["idCarrera"]);
	
	$i=0;
	if($rsCarreras->EOF)
		return json_encode(array());
	else {
		$arrCarreras = new stdClass();
		$arrCarreras->carreraName = $rsCarreras->fields('description');
		$arrCarreras->carreraFecha = desempaquetarFecha($rsCarreras->fields('fecha'));
		
		$rsConfig = $DB->Execute("SELECT * FROM config ORDER BY idConfig DESC");
		
		//Cantidad de Palomares Inscriptos
		if($rsConfig->EOF)
			$arrCarreras->canPalomares = 0;
		else
			$arrCarreras->canPalomares = $rsConfig->fields('cantPalomares');

		$strSQL = "SELECT MAX(can) as canPalomas FROM (
					SELECT COUNT(*) AS can FROM carreras_items WHERE idCarrera = ". $_REQUEST["idCarrera"]." AND puntoCard = '$idNorte'
					UNION
					SELECT COUNT(*) AS can FROM carreras_items WHERE idCarrera = ". $_REQUEST["idCarrera"]." AND puntoCard = '$idSur'
					UNION
					SELECT COUNT(*) AS can FROM carreras_items WHERE idCarrera = ". $_REQUEST["idCarrera"]." AND puntoCard = '$idEste'
					UNION
					SELECT COUNT(*) AS can FROM carreras_items WHERE idCarrera = ". $_REQUEST["idCarrera"]." AND puntoCard = '$idOeste'
					) ALGO";
		
		//Cantidad de Palomas en la Carrera
		$rsCanPalomasCarrera = $DB->Execute($strSQL);
		if($rsCanPalomasCarrera->EOF)
			$arrCarreras->canPalomas = 0;
		else
			$arrCarreras->canPalomas = $rsCanPalomasCarrera->fields('canPalomas');
	
		return json_encode($arrCarreras);
	}
}

function calItemCarrera()
{
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$DB->StartTrans(); // start transaction
	
	$rsCarreras = $DB->Execute("SELECT * FROM carreras_items WHERE idCarrera = " . $_REQUEST["idCarrera"]);
	
	while(!$rsCarreras->EOF)
	{
		$jsonCalc = calTiempoCorr($rsCarreras->fields('puntoCard'), $rsCarreras->fields('idUser'), $rsCarreras->fields('idCarrera'), $rsCarreras->fields('diaHora'), $rsCarreras->fields('horaMarca'), $rsCarreras->fields('atraso'), $rsCarreras->fields('adelanto'));
		
		$arrCalculos = json_decode($jsonCalc);
		
		$strSQL = "UPDATE carreras_items SET ";
		$strSQL .= "    mtsMinuto = '".$arrCalculos->mtsMinutos."', ";
		$strSQL .= "    mtsMinutoReal = '".$arrCalculos->mtsMinutosReal."', ";
		$strSQL .= "    mtsPalomar = '".$arrCalculos->distancia."', ";
		$strSQL .= "    minRecorridos = '".$arrCalculos->tiempoRecorrido."' ";
		$strSQL .= " WHERE idCarreraItem = ". $rsCarreras->fields('idCarreraItem');
		
		$DB->Execute($strSQL);
		
		$rsCarreras->MoveNext();
	}
	
	if (!$DB->CompleteTrans())
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = 'Ocurri&oacute; un error al Calcular los Items de la Carrera';
	}
	else
	{
		$arrJSON->status = "OK";
		$arrJSON->msg = 'Los Items de la Carrera se calcularon correctamente';
	}	
	return json_encode($arrJSON);
}

function editResultCarrera()
{
	require("includes/constants.php");
	
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	if($_SESSION['userType'] == $idTypeDataEntry) {		
		$rsCarreras = $DB->Execute("SELECT * FROM carreras WHERE idCarrera = " . $_REQUEST["idCarrera"]);
		
		if($rsCarreras->EOF) {
			$arrJSON->status = "ERROR";
		}
		else if($rsCarreras->fields('blockDE') == 'S') {
			$arrJSON->status = "ERROR";
		}
		else {
			$arrJSON->status = "OK";
		}
	}
	else {
		$arrJSON->status = "OK";
	}
	
	return json_encode($arrJSON);
}

switch($_REQUEST['actionOfForm'])
{
	case "EDIT":
		echo editCarreras();
		break;
	case "DELETE":
		echo del();
		break;
	case "DELETEITEM":
		echo delItem();
		break;
	case "UPLOAD":
		echo batchFileUploaded();
		break;
	case "search":
		echo searchABMCarreras();
		break;
	case "addOrEdit":
		echo addOrEdit();
		break;
	case "addOrEditItem":
		echo addOrEditItem();
		break;
	case "getUsuarios":
		echo getUsuarios();
		break;
	case "getPalomas":
		echo getPalomas();
		break;
	case "savePaloma":
		echo savePaloma();
		break;
	case "getPuntosSuelta":
		echo getPuntosSuelta();
		break;
	case "getKmsPuntosSuelta":
		echo getKmsPuntosSuelta();
		break;
	case "searchCarrerasItem":
		echo searchCarrerasItem();
		break;
	case "publicarResultados":
		echo publicarResultados();
		break;
	case "distanciaPalomar":
		echo distanciaPalomar();
		break;
	case "calTiempoCorr":
		echo calTiempoCorr();
		break;
	case "VIEW_CALC_PUNTOS":
		echo viewCalcPuntos();
		break;
	case "calcularPuntajeCarrera":
		echo calcularPuntajeCarrera();
		break;
	case "calItemCarrera":
		echo calItemCarrera();
		break;
	case "calTiempoCorr1":
		echo calTiempoCorr("N", "156", "51", "2", "053256", "000000", "000000");
		break;
	case "EDIT_RESULT":
		echo editResultCarrera();
		break;
}
?>
